class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m=obstacleGrid.size(),n=obstacleGrid[0].size();
        vector<vector<int>>dp(m+1,vector<int>(n+1));//初始化时将所有格子的情况数都初始化为ie0
        dp[0][1]=1;//只需要将该格初始化为1,其他边界都为0
        for(int i=1;i<m+1;i++){
            for(int j=1;j<n+1;j++){
                if(obstacleGrid[i-1][j-1]==0){
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];//如果该格不是障碍物，则加上左边和上面的情况数
                }
            }
        }
        return dp[m][n];
    }
};
